Показано с 1 по 10 из 16

Тема: [VX ACE][MV] Валюты (Game Currency)

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию [VX ACE][MV] Валюты (Game Currency)

    Валюты
    Автор: DK (Денис Кузнецов)
    Мейкер: VX Ace
    Версия: 1.1 от 14.08.15
    Тип: Добавляющий возможности

    Добавляет в игру несколько валют.

    Особенности:
    • Настройка количества валют
    • Изменено окно Window_Gold


    Использование:
    Вся инструкция и настройки в шапке скрипта!

    Демо: Версия 1.1

    Скрипт в облаке: Яндекс.диск

    Скрипт:
    Спойлер Код:
    =begin
    ################################################## #############################
    # #
    # Валюта (Game Currency) #
    # #
    ################################################## #############################

    Автор: Денис Кузнецов (http://vk.com/id8137201)
    Группа ВК: https://vk.com/scriptsrpgmakervxace
    Версия: 1.1
    Релиз от: 14.08.15
    Первый релиз: 13.08.15

    Что нового в этой версии:
    - Добавил новый вызов скрита
    - Добавил сохранение/загрузку одной настройки вместе с игрой
    - Убрал коэффициенты
    - Изменено название одного вызова скрипта, а также некоторые параметры вызовов
    - Баг фикс Window_Gold, Window_Window_ShopNumber и Scene_Shop

    Инструкция:

    Получить текущее количество денег текущей валюты:
    get_game_currency_value

    Получить номер текущей валюты:
    get_game_currency_type

    Получить номер валюты, использованной в предыдущий раз:
    get_game_last_currency_type

    Установить значение для текущей валюты:
    set_game_currency_value(value)

    Установить номер валюты для использования:
    set_game_currency_type(currency_type)

    Перенести деньги с одной валюты на другую:
    type1 - откуда перенести
    type2 - куда перенести
    rate - значение коэффициента переноса (type1 * rate) (по-умолчанию равен 1)
    game_exchange_currency(type1, type2, rate)

    Увеличить значение валюты:
    currency_type - номер валюты
    amount - значение
    game_gain_currency(currency_type, amount)

    Уменьшить значение валюты:
    game_lose_currency(currency_type, amount)

    Установить отображение только текущей валюты в окне золота (Window_Gold):
    setup - true или false (только текущее значение или нет)
    set_game_window_gold_current_currency(setup)

    Для справки о совместимости с другими скриптами:
    В данном скрипте переписаны/дополнены стандартные классы

    ### module Vocab ###
    Переписанные методы:
    self.currency_unit(currency_type = nil)

    ### class Game_Party ###
    Новые методы:
    init_currency
    currency_value=(currency_value)
    currency_type=(currency_type)
    exchange_currency(type1, type2, rate)
    gold

    Дополненные методы:
    initialize

    Переписанные методы:
    gain_gold(amount)

    ### class Window_Gold ###
    Новые методы:
    value_width
    type

    Дополненные методы:
    initialize
    update
    draw_currency_value(value, unit, x, y, width)

    Переписанные методы:
    value
    currency_unit

    ### class Window_ShopNumber ###
    Дополненные методы:
    initialize(x, y, height)
    set(item, max, price, currency_unit = nil)
    draw_currency_value(value, unit, x, y, width)

    Переписанные методы:
    currency_unit=(currency_unit)

    ### class Scene_Shop ###
    Переписанные методы:
    money
    currency_unit

    =end

    module Currency_Settings

    # Какую валюту использовать в начале игры ?
    GAME_CURRENCY_START_TYPE = 0

    # Настройка валют
    # номер_валюты => { :name => "символ_валюты", :start_value => значение (количество валюты в начале игры (можно не указывать этот параметр)) }
    GAME_CURRENCY = {
    0 => { :name => "Gil" },
    1 => { :name => "$", :start_value => 5000 },
    2 => { :name => "€", :start_value => 2000 }
    }

    # Настройка иконок для отображения в окне денег
    # Если не указана иконка, то будет отображаться символ валюты
    # номер_валюты => номер_иконки
    # GAME_CURRENCY_WINDOW_GOLD_ICON = { } чтобы не использовать
    GAME_CURRENCY_WINDOW_GOLD_ICON = {
    0 => 341,
    1 => 361,
    #~ 2 => 360
    }

    # Отображать только используемую на данный момент валюту ?
    # true - да, false - нет
    $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY = false

    end # module Currency_Settings

    module Vocab

    def self.currency_unit(currency_type = nil)
    if currency_type.nil?
    Currency_Settings::GAME_CURRENCY[$game_party.currency_type][:name]
    else
    Currency_Settings::GAME_CURRENCY[currency_type][:name]
    end
    end

    end # module Vocab

    class Game_Party < Game_Unit

    include Currency_Settings

    attr_reader :last_currency_type
    attr_reader :currency_type
    attr_reader :currency

    alias denis_kyznetsov_game_currency_game_party_initializ e initialize
    def initialize
    denis_kyznetsov_game_currency_game_party_initializ e
    @last_currency_type = GAME_CURRENCY_START_TYPE
    @currency_type = GAME_CURRENCY_START_TYPE
    init_currency
    end

    def init_currency
    return if !@currency.nil?
    @currency = {}
    GAME_CURRENCY.keys.each do |index|
    value = GAME_CURRENCY[index].has_key?(:start_value) ? GAME_CURRENCY[index][:start_value] : 0
    @currency[index] = value
    end
    end

    def currency_value=(currency_value)
    @currency[@currency_type] = currency_value
    end

    def currency_type=(currency_type)
    @last_currency_type = @currency_type
    @currency_type = currency_type
    end

    def exchange_currency(type1, type2, rate)
    @currency[type2] += (@currency[type1] * rate).to_i
    @currency[type1] = 0
    end

    def gold
    return @currency[@currency_type]
    end

    def gain_gold(amount)
    @currency[@currency_type] = [[@currency[@currency_type] + amount, -max_gold].max, max_gold].min
    end

    end # class Game_Party < Game_Unit

    class Game_Interpreter

    include Currency_Settings

    def set_game_window_gold_current_currency(setup)
    $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY = setup
    end

    def get_game_currency_value
    return $game_party.gold
    end

    def get_game_currency_type
    return $game_party.currency_type
    end

    def get_game_last_currency_type
    return $game_party.last_currency_type
    end

    def set_game_currency_value(value)
    $game_party.currency_value = value
    end

    def set_game_currency_type(currency_type)
    return if !GAME_CURRENCY.has_key?(currency_type)
    $game_party.currency_type = currency_type
    end

    def game_exchange_currency(type1, type2, rate = 1)
    return if !GAME_CURRENCY.has_key?(type1) || !GAME_CURRENCY.has_key?(type2)
    $game_party.exchange_currency(type1, type2, rate)
    end

    def game_gain_currency(currency_type, amount)
    return if !GAME_CURRENCY.has_key?(currency_type)
    last_currency = $game_party.currency_type
    game_currency_type(currency_type)
    $game_party.gain_gold(amount)
    game_currency_type(last_currency)
    end

    def game_lose_currency(currency_type, amount)
    game_gain_currency(currency_type, -amount)
    end

    end # class Game_Interpreter

    $imported = {} if $imported.nil?
    $imported["DenKyz_Game_Currency"] = true

    class Window_Gold < Window_Base

    include Currency_Settings

    alias denis_kyznetsov_game_currency_window_gold_initiali ze initialize
    def initialize
    @currency_keys_type = 0 # номер ключа массива валют
    denis_kyznetsov_game_currency_window_gold_initiali ze
    self.arrows_visible = false
    self.ox = -value_width if !$GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY && GAME_CURRENCY.size > 1
    end

    alias denis_kyznetsov_game_currency_window_gold_update update
    def update
    denis_kyznetsov_game_currency_window_gold_update
    if !$GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY && GAME_CURRENCY.size > 1
    self.ox += 1
    if self.ox > contents.width
    @currency_keys_type += 1
    @currency_keys_type %= $game_party.currency.keys.size
    self.ox = -value_width
    refresh
    end
    elsif $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY && self.ox != 0
    self.ox = 0
    refresh
    end
    end

    def value_width # ширина значения вместе с иконкой или текстом
    val_width = 24 # отступ
    val_width += text_size(currency_unit).width if !GAME_CURRENCY_WINDOW_GOLD_ICON.has_key?(type) # ширина названия валюты, если нет иконки
    val_width += text_size(value).width # ширина значения
    return val_width
    end

    def value # значение валюты
    if $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY
    $game_party.gold
    else
    $game_party.currency[type]
    end
    end

    def type # получить тип валюты из ключей
    if $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY
    $game_party.currency_type
    else
    $game_party.currency.keys[@currency_keys_type]
    end
    end

    def currency_unit # символ валюты
    Vocab::currency_unit(type)
    end

    alias denis_kyznetsov_game_currency_window_gold_draw_cur rency_value draw_currency_value
    def draw_currency_value(value, unit, x, y, width)
    return denis_kyznetsov_game_currency_window_gold_draw_cur rency_value(value, unit, x, y, width) if !GAME_CURRENCY_WINDOW_GOLD_ICON.has_key?(type)
    change_color(normal_color)
    draw_text(x, y, width - 16 - 2, line_height, value, 2)
    draw_icon(GAME_CURRENCY_WINDOW_GOLD_ICON[type], width - 16, y)
    end

    end # class Window_Gold < Window_Base

    class Window_ShopNumber < Window_Selectable

    include Currency_Settings

    alias denis_kyznetsov_game_currency_window_shop_number_i nitialize initialize
    def initialize(x, y, height)
    denis_kyznetsov_game_currency_window_shop_number_i nitialize(x, y, height)
    @currency_unit = $game_party.currency_type
    end

    alias denis_kyznetsov_game_currency_window_shop_number_s et set
    def set(item, max, price, currency_unit = nil)
    denis_kyznetsov_game_currency_window_shop_number_s et(item, max, price, currency_unit)
    @currency_unit = $game_party.currency_type if currency_unit
    refresh
    end

    def currency_unit=(currency_unit)
    @currency_unit = $game_party.currency_type
    refresh
    end

    alias denis_kyznetsov_game_currency_window_shop_number_d raw_currency_value draw_currency_value
    def draw_currency_value(value, unit, x, y, width)
    if !GAME_CURRENCY_WINDOW_GOLD_ICON.has_key?(unit)
    unit = Vocab::currency_unit
    return denis_kyznetsov_game_currency_window_shop_number_d raw_currency_value(value, unit, x, y, width)
    end
    change_color(normal_color)
    draw_text(x, y, width - 16 - 2, line_height, value, 2)
    draw_icon(GAME_CURRENCY_WINDOW_GOLD_ICON[unit], width - 16, y)
    end

    end # class Window_ShopNumber < Window_Selectable

    class Scene_Shop < Scene_MenuBase

    def money
    $game_party.gold
    end

    def currency_unit
    $game_party.currency_type
    end

    end # class Scene_Shop < Scene_MenuBase

    module DataManager

    class << self
    alias denis_kyznetsov_game_currency_data_manager_make_sa ve_contents make_save_contents
    alias denis_kyznetsov_game_currency_data_manager_extract _save_contents extract_save_contents
    end

    def self.make_save_contents
    contents = denis_kyznetsov_game_currency_data_manager_make_sa ve_contents
    contents[:GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY] = $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY
    contents
    end

    def self.extract_save_contents(contents)
    denis_kyznetsov_game_currency_data_manager_extract _save_contents(contents)
    $GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY = contents[:GAME_CURRENCY_WINDOW_GOLD_CURRENT_CURRENCY]
    end

    end # module DataManager


    Валюты
    Автор: DK (Денис Кузнецов)
    Мейкер: MV
    Версия: 1.3

    Требования:
    Ядро DKCore версии 1.61 или выше

    Плагин больше не поддерживается и не развивается

    Скачать с Яндекс.Диск:
    Яндекс.Диск
    Последний раз редактировалось DK; 11.04.2016 в 21:01. Причина: Обновление

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[VX ACE][MV] Валюты (Game Currency)